#define _CRT_SECURE_NO_WARNINGS 1

#include<iostream>
#include<vector>

using namespace std;

int numRookCaptures(vector<vector<char>>& board) {
    int n = board.size(), m = board[0].size();
    int dx[4] = { 0,0,1,-1 };
    int dy[4] = { 1,-1,0,0 };
    int st = 0, ed = 0;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            if (board[i][j] == 'R')
                st = i, ed = j;

    int cnt = 0;
    for (int i = 0; i < 4; i++)
        for (int step = 0;; ++step)
        {
            int a = st + dx[i] * step;
            int b = ed + dy[i] * step;
            if (a < 0 || a >= n || b < 0 || b >= m || board[a][b] == 'B')
                break;
            if (board[a][b] == 'p')
            {
                cnt++;
                break;
            }
        }
    return cnt;
}

const int  N = 100010;

int v[N];
int n;

using namespace std;

void quick_sort(int l, int r)
{
    if (l > r)
        return;

    int key = v[(l + r) / 2], i = l - 1, j = r + 1;

    while (i < j)
    {
        do i++; while (v[i] < key);
        do j--; while (v[j] > key);

        if (i < j) swap(v[i], v[j]);
    }
    quick_sort(l, j);
    quick_sort(j + 1, r);
}


int main()
{
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
        scanf("%d", &v[i]);

    quick_sort(0, n - 1);

    for (int i = 0; i < n; i++)
        printf("%d ", v[i]);
    return 0;
}